import $ from 'jquery'

export default {
    state: {
        id: 0,
        username: "",
        password: "",
        photo: "",
        token: "",
        is_login: false,
        followercount:0,
        attentionids:0,
        pulling_info: true, //是否正在拉取信息，拉取时不显示登陆界面
    },
    getters: {
    },
    mutations: {
        updateUser(state, user) {
            state.id = user.id;
            state.username = user.username;
            state.photo = user.photo;
            state.is_login = user.is_login;
        },
        updateToken(state, token) {
            state.token = token;
        },
        logout(state) {
            state.id = "";
            state.username = "";
            state.photo = "";
            state.token = "";
            state.followercount = "",
            state.attentionids = "",
            state.is_login = false;
        },
        updatePullingInfo(state, pulling_info) { //参数的修改辅助函数
            state.pulling_info = pulling_info;
        }
    },
    actions: {//修改state的函数一般写在这里
        login(context, data) {//用于登录的辅助函数，传入上下文参数，和数据参数,data是自己包装的对象
            $.ajax({
                url: "http://127.0.0.1:3000/user/account/token/",
                type: "post",
                data: {
                  username: data.username,
                  password: data.password,
                },
                success(resp) {//resp是后端自定义传入的,map类型（访问链接成功）
                    if (resp.error_message === "success") {//（登录成功）
                        localStorage.setItem("jwt_token", resp.token);//将token自己取个名字，存入浏览器内存中
                        context.commit("updateToken", resp.token);//actions中调用mutations中的函数，需要用commit里面加函数名和参数
                        data.success(resp);//自定义的成功回调函数(在下面data中定义)
                    } else {
                        data.error(resp);//自定义的失败回调函数(在下面data中定义)
                    }
                },
                error(resp) {
                  data.error(resp); 
                }
              });
        },
        getinfo(context, data) {
            $.ajax({
                url: "http://127.0.0.1:3000/user/account/info/",
                type: "get",
                headers: {
                  Authorization: "Bearer " + context.state.token,//从全局变量中获取token（这个token是登录的时候传入全局变量的）
                },
                //成功就更新用户。
                success(resp) {//resp就是在这里，从后端传入前端
                    if (resp.error_message === "success") {
                        context.commit("updateUser", {//更新用户
                            ...resp,//三个点是用来解析resp中的参数，全虚拟写成键值对的形式
                            is_login: true,//已登陆
                        });
                        data.success(resp);
                    } else {
                        data.error(resp);
                    }
                },
                error(resp) {
                    data.error(resp);
                }
              });
        },
        logout(context) {
            localStorage.removeItem("jwt_token");//退出之前，删掉token
            context.commit("logout");
        }
    },
    modules: {
    }
}